home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Beta / Quicktime 2.0 Beta.iso / Programming Stuff / Interfaces / Universal Interfaces / AppleTalk.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-01-30  |  44.2 KB  |  1,492 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        AppleTalk.h
  3.  
  4.     Copyright:    © 1984-1993 by Apple Computer, Inc., all rights reserved.
  5.  
  6.     WARNING
  7.     This file was auto generated by the interfacer tool. Modifications
  8.     must be made to the master file.
  9.  
  10. */
  11.  
  12. #ifndef __APPLETALK__
  13. #define __APPLETALK__
  14.  
  15. #ifndef __TYPES__
  16. #include <Types.h>
  17. /*    #include <ConditionalMacros.h>                                */
  18. /*    #include <MixedMode.h>                                        */
  19. /*        #include <Traps.h>                                        */
  20. #endif
  21.  
  22. #ifndef __OSUTILS__
  23. #include <OSUtils.h>
  24. #endif
  25.  
  26. enum  {
  27. /* Driver unit and reference numbers (ADSP is dynamic) */
  28.     mppUnitNum                    = 9,                            /* MPP unit number */
  29.     atpUnitNum                    = 10,                            /* ATP unit number */
  30.     xppUnitNum                    = 40,                            /* XPP unit number */
  31.     mppRefNum                    = -10,                            /* MPP reference number */
  32.     atpRefNum                    = -11,                            /* ATP reference number */
  33.     xppRefNum                    = -41,                            /* XPP reference number */
  34. /* .MPP csCodes */
  35.     lookupReply                    = 242,                            /* This command queued to ourself */
  36.     writeLAP                    = 243,                            /* Write out LAP packet */
  37.     detachPH                    = 244,                            /* Detach LAP protocol handler */
  38.     attachPH                    = 245,                            /* Attach LAP protocol handler */
  39.     writeDDP                    = 246,                            /* Write out DDP packet */
  40.     closeSkt                    = 247,                            /* Close DDP socket */
  41.     openSkt                        = 248,                            /* Open DDP socket */
  42.     loadNBP                        = 249,                            /* Load NBP command-executing code */
  43.     lastResident                = 249,                            /* Last resident command */
  44.     confirmName                    = 250,                            /* Confirm name */
  45.     lookupName                    = 251,                            /* Look up name on internet */
  46.     removeName                    = 252,                            /* Remove name from Names Table */
  47.     registerName                = 253,                            /* Register name in Names Table */
  48.     killNBP                        = 254                            /* Kill outstanding NBP request */
  49. };
  50.  
  51. enum  {
  52.     unloadNBP                    = 255,                            /* Unload NBP command code */
  53.     setSelfSend                    = 256,                            /* MPP: Set to allow writes to self */
  54.     SetMyZone                    = 257,                            /* Set my zone name */
  55.     GetATalkInfo                = 258,                            /* get AppleTalk information */
  56.     ATalkClosePrep                = 259,                            /* AppleTalk close query */
  57. /* .ATP csCodes */
  58.     nSendRequest                = 248,                            /* NSendRequest code */
  59.     relRspCB                    = 249,                            /* Release RspCB */
  60.     closeATPSkt                    = 250,                            /* Close ATP socket */
  61.     addResponse                    = 251,                            /* Add response code | Require open skt */
  62.     sendResponse                = 252,                            /* Send response code */
  63.     getRequest                    = 253,                            /* Get request code */
  64.     openATPSkt                    = 254,                            /* Open ATP socket */
  65.     sendRequest                    = 255,                            /* Send request code */
  66.     relTCB                        = 256,                            /* Release TCB */
  67.     killGetReq                    = 257,                            /* Kill GetRequest */
  68.     killSendReq                    = 258,                            /* Kill SendRequest */
  69.     killAllGetReq                = 259,                            /* Kill all getRequests for a skt */
  70. /* .XPP csCodes */
  71.     openSess                    = 255,                            /* Open session */
  72.     closeSess                    = 254,                            /* Close session */
  73.     userCommand                    = 253                            /* User command */
  74. };
  75.  
  76. enum  {
  77.     userWrite                    = 252,                            /* User write */
  78.     getStatus                    = 251,                            /* Get status */
  79.     afpCall                        = 250,                            /* AFP command (buffer has command code) */
  80.     getParms                    = 249,                            /* Get parameters */
  81.     abortOS                        = 248,                            /* Abort open session request */
  82.     closeAll                    = 247,                            /* Close all open sessions */
  83.     xCall                        = 246,                            /* .XPP extended calls */
  84. /* Transition Queue transition types */
  85.     ATTransOpen                    = 0,                            /*AppleTalk has opened*/
  86.     ATTransClose                = 2,                            /*AppleTalk is about to close*/
  87.     ATTransClosePrep            = 3,                            /*Is it OK to close AppleTalk ?*/
  88.     ATTransCancelClose            = 4,                            /*Cancel the ClosePrep transition*/
  89.     afpByteRangeLock            = 1,                            /*AFPCall command codes*/
  90.     afpVolClose                    = 2,                            /*AFPCall command codes*/
  91.     afpDirClose                    = 3,                            /*AFPCall command codes*/
  92.     afpForkClose                = 4,                            /*AFPCall command codes*/
  93.     afpCopyFile                    = 5,                            /*AFPCall command codes*/
  94.     afpDirCreate                = 6,                            /*AFPCall command codes*/
  95.     afpFileCreate                = 7,                            /*AFPCall command codes*/
  96.     afpDelete                    = 8,                            /*AFPCall command codes*/
  97.     afpEnumerate                = 9                                /*AFPCall command codes*/
  98. };
  99.  
  100. enum  {
  101.     afpFlush                    = 10,                            /*AFPCall command codes*/
  102.     afpForkFlush                = 11,                            /*AFPCall command codes*/
  103.     afpGetDirParms                = 12,                            /*AFPCall command codes*/
  104.     afpGetFileParms                = 13,                            /*AFPCall command codes*/
  105.     afpGetForkParms                = 14,                            /*AFPCall command codes*/
  106.     afpGetSInfo                    = 15,                            /*AFPCall command codes*/
  107.     afpGetSParms                = 16,                            /*AFPCall command codes*/
  108.     afpGetVolParms                = 17,                            /*AFPCall command codes*/
  109.     afpLogin                    = 18,                            /*AFPCall command codes*/
  110.     afpContLogin                = 19,                            /*AFPCall command codes*/
  111.     afpLogout                    = 20,                            /*AFPCall command codes*/
  112.     afpMapID                    = 21,                            /*AFPCall command codes*/
  113.     afpMapName                    = 22,                            /*AFPCall command codes*/
  114.     afpMove                        = 23,                            /*AFPCall command codes*/
  115.     afpOpenVol                    = 24,                            /*AFPCall command codes*/
  116.     afpOpenDir                    = 25,                            /*AFPCall command codes*/
  117.     afpOpenFork                    = 26,                            /*AFPCall command codes*/
  118.     afpRead                        = 27,                            /*AFPCall command codes*/
  119.     afpRename                    = 28,                            /*AFPCall command codes*/
  120.     afpSetDirParms                = 29                            /*AFPCall command codes*/
  121. };
  122.  
  123. enum  {
  124.     afpSetFileParms                = 30,                            /*AFPCall command codes*/
  125.     afpSetForkParms                = 31,                            /*AFPCall command codes*/
  126.     afpSetVolParms                = 32,                            /*AFPCall command codes*/
  127.     afpWrite                    = 33,                            /*AFPCall command codes*/
  128.     afpGetFlDrParms                = 34,                            /*AFPCall command codes*/
  129.     afpSetFlDrParms                = 35,                            /*AFPCall command codes*/
  130.     afpDTOpen                    = 48,                            /*AFPCall command codes*/
  131.     afpDTClose                    = 49,                            /*AFPCall command codes*/
  132.     afpGetIcon                    = 51,                            /*AFPCall command codes*/
  133.     afpGtIcnInfo                = 52,                            /*AFPCall command codes*/
  134.     afpAddAPPL                    = 53,                            /*AFPCall command codes*/
  135.     afpRmvAPPL                    = 54,                            /*AFPCall command codes*/
  136.     afpGetAPPL                    = 55,                            /*AFPCall command codes*/
  137.     afpAddCmt                    = 56,                            /*AFPCall command codes*/
  138.     afpRmvCmt                    = 57,                            /*AFPCall command codes*/
  139.     afpGetCmt                    = 58,                            /*AFPCall command codes*/
  140.     afpAddIcon                    = 192,                            /*Special code for ASP Write commands*/
  141.     xppLoadedBit                = 5,                            /* XPP bit in PortBUse */
  142.     scbMemSize                    = 192,                            /* Size of memory for SCB */
  143.     xppFlagClr                    = 0                                /* Cs for AFPCommandBlock */
  144. };
  145.  
  146. #define MPPioCompletion MPP.ioCompletion
  147.  
  148. #define MPPioResult MPP.ioResult
  149.  
  150. #define MPPioRefNum MPP.ioRefNum
  151.  
  152. #define MPPcsCode MPP.csCode
  153.  
  154. #define LAPprotType LAP.protType
  155.  
  156. #define LAPwdsPointer LAP.LAPptrs.wdsPointer
  157.  
  158. #define LAPhandler LAP.LAPptrs.handler
  159.  
  160. #define DDPsocket DDP.socket
  161.  
  162. #define DDPchecksumFlag DDP.checksumFlag
  163.  
  164. #define DDPwdsPointer DDP.DDPptrs.wdsPointer
  165.  
  166. #define DDPlistener DDP.DDPptrs.listener
  167.  
  168. #define NBPinterval NBP.interval
  169.  
  170. #define NBPcount NBP.count
  171.  
  172. #define NBPntQElPtr NBP.NBPPtrs.ntQElPtr
  173.  
  174. #define NBPentityPtr NBP.NBPPtrs.entityPtr
  175.  
  176. #define NBPverifyFlag NBP.parm.verifyFlag
  177.  
  178. #define NBPretBuffPtr NBP.parm.Lookup.retBuffPtr
  179.  
  180. #define NBPretBuffSize NBP.parm.Lookup.retBuffSize
  181.  
  182. #define NBPmaxToGet NBP.parm.Lookup.maxToGet
  183.  
  184. #define NBPnumGotten NBP.parm.Lookup.numGotten
  185.  
  186. #define NBPconfirmAddr NBP.parm.Confirm.confirmAddr
  187.  
  188. #define NBPnKillQEl NBPKILL.nKillQEl
  189.  
  190. #define NBPnewSocket NBP.parm.Confirm.newSocket
  191.  
  192. #define ATPioCompletion ATP.ioCompletion
  193.  
  194. #define ATPioResult ATP.ioResult
  195.  
  196. #define ATPuserData ATP.userData
  197.  
  198. #define ATPreqTID ATP.reqTID
  199.  
  200. #define ATPioRefNum ATP.ioRefNum
  201.  
  202. #define ATPcsCode ATP.csCode
  203.  
  204. #define ATPatpSocket ATP.atpSocket
  205.  
  206. #define ATPatpFlags ATP.atpFlags
  207.  
  208. #define ATPaddrBlock ATP.addrBlock
  209.  
  210. #define ATPreqLength ATP.reqLength
  211.  
  212. #define ATPreqPointer ATP.reqPointer
  213.  
  214. #define ATPbdsPointer ATP.bdsPointer
  215.  
  216. #define ATPtimeOutVal SREQ.timeOutVal
  217.  
  218. #define ATPnumOfResps SREQ.numOfResps
  219.  
  220. #define ATPretryCount SREQ.retryCount
  221.  
  222. #define ATPnumOfBuffs OTH1.u0.numOfBuffs
  223.  
  224. #define ATPbitMap OTH1.u0.bitMap
  225.  
  226. #define ATPrspNum OTH1.u0.rspNum
  227.  
  228. #define ATPbdsSize OTH2.bdsSize
  229.  
  230. #define ATPtransID OTH2.transID
  231.  
  232. #define ATPaKillQEl KILL.aKillQEl
  233.  
  234. enum  {
  235.     xppFlagSet                    = 128,                            /* StartEndFlag & NewLineFlag fields. */
  236.     lapSize                        = 20,
  237.     ddpSize                        = 26,
  238.     nbpSize                        = 26,
  239.     atpSize                        = 56,
  240.     atpXOvalue                    = 32,                            /*ATP exactly-once bit */
  241.     atpEOMvalue                    = 16,                            /*ATP End-Of-Message bit */
  242.     atpSTSvalue                    = 8,                            /*ATP Send-Transmission-Status bit */
  243.     atpTIDValidvalue            = 2,                            /*ATP trans. ID valid bit */
  244.     atpSendChkvalue                = 1,                            /*ATP send checksum bit */
  245.     zipGetLocalZones            = 5,
  246.     zipGetZoneList                = 6,
  247.     zipGetMyZone                = 7,
  248.     LAPMgrPtr                    = 0xB18,                        /*Entry point for LAP Manager*/
  249.     LAPMgrCall                    = 2,                            /*Offset to LAP routines*/
  250.     LAddAEQ                        = 23,                            /*LAPAddATQ routine selector*/
  251.     LRmvAEQ                        = 24                            /*LAPRmvATQ routine selector*/
  252. };
  253.  
  254. enum  {
  255.     tLAPRead,
  256.     tLAPWrite,
  257.     tDDPRead,
  258.     tDDPWrite,
  259.     tNBPLookup,
  260.     tNBPConfirm,
  261.     tNBPRegister,
  262.     tATPSndRequest,
  263.     tATPGetRequest,
  264.     tATPSdRsp,
  265.     tATPAddRsp,
  266.     tATPRequest,
  267.     tATPResponse
  268. };
  269.  
  270. typedef unsigned char ABCallType;
  271.  
  272. enum  {
  273.     lapProto,
  274.     ddpProto,
  275.     nbpProto,
  276.     atpProto
  277. };
  278.  
  279. typedef unsigned char ABProtoType;
  280.  
  281. typedef Byte ABByte;
  282.  
  283. #if defined(powerc) || defined (__powerc)
  284. #pragma options align=mac68k
  285. #endif
  286. struct LAPAdrBlock {
  287.     unsigned char                dstNodeID;
  288.     unsigned char                srcNodeID;
  289.     ABByte                        lapProtType;
  290. };
  291. #if defined(powerc) || defined(__powerc)
  292. #pragma options align=reset
  293. #endif
  294.  
  295. typedef struct LAPAdrBlock LAPAdrBlock;
  296.  
  297. typedef struct ATQEntry ATQEntry, *ATQEntryPtr;
  298.  
  299. typedef long (*ATalkTransitionEventProcPtr)(long eventCode, ATQEntryPtr qElem, void *eventParameter);
  300.  
  301. enum {
  302.     uppATalkTransitionEventProcInfo = kCStackBased
  303.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  304.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  305.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ATQEntryPtr)))
  306.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(void*)))
  307. };
  308.  
  309. #if USESROUTINEDESCRIPTORS
  310. typedef UniversalProcPtr ATalkTransitionEventUPP;
  311.  
  312. #define CallATalkTransitionEventProc(userRoutine, eventCode, qElem, eventParameter)        \
  313.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppATalkTransitionEventProcInfo, (eventCode), (qElem), (eventParameter))
  314. #define NewATalkTransitionEventProc(userRoutine)        \
  315.         (ATalkTransitionEventUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppATalkTransitionEventProcInfo, GetCurrentISA())
  316. #else
  317. typedef ATalkTransitionEventProcPtr ATalkTransitionEventUPP;
  318.  
  319. #define CallATalkTransitionEventProc(userRoutine, eventCode, qElem, eventParameter)        \
  320.         (*(userRoutine))((eventCode), (qElem), (eventParameter))
  321. #define NewATalkTransitionEventProc(userRoutine)        \
  322.         (ATalkTransitionEventUPP)(userRoutine)
  323. #endif
  324.  
  325. typedef ATalkTransitionEventProcPtr ATalkTransitionEvent;
  326.  
  327. #if defined(powerc) || defined (__powerc)
  328. #pragma options align=mac68k
  329. #endif
  330. struct ATQEntry {
  331.     struct ATQEntry                *qLink;                            /*next queue entry*/
  332.     short                        qType;                            /*queue type*/
  333.     ATalkTransitionEventUPP        CallAddr;                        /*your routine descriptor*/
  334. };
  335. #if defined(powerc) || defined(__powerc)
  336. #pragma options align=reset
  337. #endif
  338.  
  339. #if defined(powerc) || defined (__powerc)
  340. #pragma options align=mac68k
  341. #endif
  342. struct AddrBlock {
  343.     short                        aNet;
  344.     unsigned char                aNode;
  345.     unsigned char                aSocket;
  346. };
  347. #if defined(powerc) || defined(__powerc)
  348. #pragma options align=reset
  349. #endif
  350.  
  351. typedef struct AddrBlock AddrBlock;
  352.  
  353.  
  354. /* Real definition of EntityName is 3 PACKED strings of any length (32 is just an example). No
  355. offests for Asm since each String address must be calculated by adding length byte to last string ptr.
  356. In Pascal, String(32) will be 34 bytes long since fields never start on an odd byte unless they are 
  357. only a byte long. So this will generate correct looking interfaces for Pascal and C, but they will not
  358. be the same, which is OK since they are not used. */
  359.  
  360. #if defined(powerc) || defined (__powerc)
  361. #pragma options align=mac68k
  362. #endif
  363. struct EntityName {
  364.     Str32                        objStr;
  365.     char                        pad1;                            /*Str32's aligned on even word boundries.*/
  366.     Str32                        typeStr;
  367.     char                        pad2;
  368.     Str32                        zoneStr;
  369.     char                        pad3;
  370. };
  371. #if defined(powerc) || defined(__powerc)
  372. #pragma options align=reset
  373. #endif
  374.  
  375. typedef struct EntityName EntityName;
  376.  
  377. typedef EntityName *EntityPtr;
  378.  
  379. #if defined(powerc) || defined (__powerc)
  380. #pragma options align=mac68k
  381. #endif
  382. struct RetransType {
  383.     unsigned char                retransInterval;
  384.     unsigned char                retransCount;
  385. };
  386. #if defined(powerc) || defined(__powerc)
  387. #pragma options align=reset
  388. #endif
  389.  
  390. typedef struct RetransType RetransType;
  391.  
  392. #if defined(powerc) || defined (__powerc)
  393. #pragma options align=mac68k
  394. #endif
  395. struct BDSElement {
  396.     short                        buffSize;
  397.     Ptr                            buffPtr;
  398.     short                        dataSize;
  399.     long                        userBytes;
  400. };
  401. #if defined(powerc) || defined(__powerc)
  402. #pragma options align=reset
  403. #endif
  404.  
  405. typedef struct BDSElement BDSElement;
  406.  
  407. typedef BDSElement BDSType[8];
  408.  
  409. typedef BDSElement *BDSPtr;
  410.  
  411. typedef char BitMapType;
  412.  
  413. #if defined(powerc) || defined (__powerc)
  414. #pragma options align=mac68k
  415. #endif
  416. struct ATLAPRec {
  417.     ABCallType                    abOpcode;
  418.     short                        abResult;
  419.     long                        abUserReference;
  420.     LAPAdrBlock                    lapAddress;
  421.     short                        lapReqCount;
  422.     short                        lapActCount;
  423.     Ptr                            lapDataPtr;
  424. };
  425. #if defined(powerc) || defined(__powerc)
  426. #pragma options align=reset
  427. #endif
  428.  
  429. typedef struct ATLAPRec ATLAPRec;
  430.  
  431. typedef ATLAPRec *ATLAPRecPtr, **ATLAPRecHandle;
  432.  
  433. #if defined(powerc) || defined (__powerc)
  434. #pragma options align=mac68k
  435. #endif
  436. struct ATDDPRec {
  437.     ABCallType                    abOpcode;
  438.     short                        abResult;
  439.     long                        abUserReference;
  440.     short                        ddpType;
  441.     short                        ddpSocket;
  442.     AddrBlock                    ddpAddress;
  443.     short                        ddpReqCount;
  444.     short                        ddpActCount;
  445.     Ptr                            ddpDataPtr;
  446.     short                        ddpNodeID;
  447. };
  448. #if defined(powerc) || defined(__powerc)
  449. #pragma options align=reset
  450. #endif
  451.  
  452. typedef struct ATDDPRec ATDDPRec;
  453.  
  454. typedef ATDDPRec *ATDDPRecPtr, **ATDDPRecHandle;
  455.  
  456. #if defined(powerc) || defined (__powerc)
  457. #pragma options align=mac68k
  458. #endif
  459. struct ATNBPRec {
  460.     ABCallType                    abOpcode;
  461.     short                        abResult;
  462.     long                        abUserReference;
  463.     EntityPtr                    nbpEntityPtr;
  464.     Ptr                            nbpBufPtr;
  465.     short                        nbpBufSize;
  466.     short                        nbpDataField;
  467.     AddrBlock                    nbpAddress;
  468.     RetransType                    nbpRetransmitInfo;
  469. };
  470. #if defined(powerc) || defined(__powerc)
  471. #pragma options align=reset
  472. #endif
  473.  
  474. typedef struct ATNBPRec ATNBPRec;
  475.  
  476. typedef ATNBPRec *ATNBPRecPtr, **ATNBPRecHandle;
  477.  
  478. #if defined(powerc) || defined (__powerc)
  479. #pragma options align=mac68k
  480. #endif
  481. struct ATATPRec {
  482.     ABCallType                    abOpcode;
  483.     short                        abResult;
  484.     long                        abUserReference;
  485.     short                        atpSocket;
  486.     AddrBlock                    atpAddress;
  487.     short                        atpReqCount;
  488.     Ptr                            atpDataPtr;
  489.     BDSPtr                        atpRspBDSPtr;
  490.     BitMapType                    atpBitMap;
  491.     short                        atpTransID;
  492.     short                        atpActCount;
  493.     long                        atpUserData;
  494.     Boolean                        atpXO;
  495.     Boolean                        atpEOM;
  496.     short                        atpTimeOut;
  497.     short                        atpRetries;
  498.     short                        atpNumBufs;
  499.     short                        atpNumRsp;
  500.     short                        atpBDSSize;
  501.     long                        atpRspUData;
  502.     Ptr                            atpRspBuf;
  503.     short                        atpRspSize;
  504. };
  505. #if defined(powerc) || defined(__powerc)
  506. #pragma options align=reset
  507. #endif
  508.  
  509. typedef struct ATATPRec ATATPRec;
  510.  
  511. typedef ATATPRec *ATATPRecPtr, **ATATPRecHandle;
  512.  
  513. #if defined(powerc) || defined (__powerc)
  514. #pragma options align=mac68k
  515. #endif
  516. struct AFPCommandBlock {
  517.     char                        cmdByte;
  518.     char                        startEndFlag;
  519.     short                        forkRefNum;
  520.     long                        rwOffset;
  521.     long                        reqCount;
  522.     char                        newLineFlag;
  523.     char                        newLineChar;
  524. };
  525. #if defined(powerc) || defined(__powerc)
  526. #pragma options align=reset
  527. #endif
  528.  
  529. typedef struct AFPCommandBlock AFPCommandBlock;
  530.  
  531. typedef union MPPParamBlock MPPParamBlock, *MPPPBPtr;
  532.  
  533. typedef union ATPParamBlock ATPParamBlock, *ATPPBPtr;
  534.  
  535. typedef union XPPParamBlock XPPParamBlock, *XPPParmBlkPtr;
  536.  
  537.  
  538. /*
  539.     MPPCompletionProcs, ATPCompletionProcs, and XPPCompletionProcs
  540.     cannot be written in or called from a high-level language without the 
  541.     help of mixed mode or assembly glue because they use the following 
  542.     parameter-passing conventions:
  543.  
  544.     typedef pascal void (*MPPCompletionProcPtr)(MPPPBPtr thePBptr);
  545.     typedef pascal void (*ATPCompletionProcPtr)(ATPPBPtr thePBptr);
  546.     typedef pascal void (*XPPCompletionProcPtr)(XPPParmBlkPtr thePBptr);
  547.  
  548.         In:
  549.             =>    thePBPtr        A0.L
  550.         Out:
  551.             none
  552. */
  553.  
  554. enum  {
  555.     uppMPPCompletionProcInfo    = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode),
  556.     uppATPCompletionProcInfo    = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode),
  557.     uppXPPCompletionProcInfo    = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterA0,kFourByteCode)
  558. };
  559.  
  560. #if USESROUTINEDESCRIPTORS
  561. typedef pascal void (*MPPCompletionProcPtr)(MPPPBPtr thePBptr);
  562.  
  563. typedef UniversalProcPtr MPPCompletionUPP;
  564.  
  565. #define CallMPPCompletionProc(userRoutine, thePBptr)  \
  566.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppMPPCompletionProcInfo, (thePBptr))
  567.  
  568. #define NewMPPCompletionProc(userRoutine)  \
  569.     (MPPCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppMPPCompletionProcInfo, GetCurrentISA())
  570.  
  571. typedef pascal void (*ATPCompletionProcPtr)(ATPPBPtr thePBptr);
  572.  
  573. typedef UniversalProcPtr ATPCompletionUPP;
  574.  
  575. #define CallATPCompletionProc(userRoutine, thePBptr)  \
  576.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppATPCompletionProcInfo, (thePBptr))
  577.  
  578. #define NewATPCompletionProc(userRoutine)  \
  579.     (ATPCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppATPCompletionProcInfo, GetCurrentISA())
  580.  
  581. typedef pascal void (*XPPCompletionProcPtr)(XPPParmBlkPtr thePBptr);
  582.  
  583. typedef UniversalProcPtr XPPCompletionUPP;
  584.  
  585. #define CallXPPCompletionProc(userRoutine, thePBptr)  \
  586.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppXPPCompletionProcInfo, (thePBptr))
  587.  
  588. #define NewXPPCompletionProc(userRoutine)  \
  589.     (XPPCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppXPPCompletionProcInfo, GetCurrentISA())
  590.  
  591. #else
  592. typedef ProcPtr MPPCompletionUPP;
  593.  
  594. #define NewMPPCompletionProc(userRoutine)  \
  595.     (MPPCompletionUPP)((userRoutine))
  596.  
  597. typedef ProcPtr ATPCompletionUPP;
  598.  
  599. #define NewATPCompletionProc(userRoutine)  \
  600.     (ATPCompletionUPP)((userRoutine))
  601.  
  602. typedef ProcPtr XPPCompletionUPP;
  603.  
  604. #define NewXPPCompletionProc(userRoutine)  \
  605.     (XPPCompletionUPP)((userRoutine))
  606.  
  607. #endif
  608.  
  609. #define XPPPBHeader             \
  610.     QElem *qLink;                \
  611.     short qType;                \
  612.     short ioTrap;                \
  613.     Ptr ioCmdAddr;                \
  614.     XPPCompletionUPP ioCompletion; \
  615.     OSErr ioResult;                \
  616.     long cmdResult;                \
  617.     short ioVRefNum;            \
  618.     short ioRefNum;                \
  619.     short csCode;
  620.  
  621. #if defined(powerc) || defined (__powerc)
  622. #pragma options align=mac68k
  623. #endif
  624. struct XPPPrmBlk {
  625.     QElem                        *qLink;
  626.     short                        qType;
  627.     short                        ioTrap;
  628.     Ptr                            ioCmdAddr;
  629.     XPPCompletionUPP            ioCompletion;
  630.     OSErr                        ioResult;
  631.     long                        cmdResult;
  632.     short                        ioVRefNum;
  633.     short                        ioRefNum;
  634.     short                        csCode;
  635.     short                        sessRefnum;                        /*Offset to session refnum*/
  636.     char                        aspTimeout;                        /*Timeout for ATP*/
  637.     char                        aspRetry;                        /*Retry count for ATP*/
  638.     short                        cbSize;                            /*Command block size*/
  639.     Ptr                            cbPtr;                            /*Command block pointer*/
  640.     short                        rbSize;                            /*Reply buffer size*/
  641.     Ptr                            rbPtr;                            /*Reply buffer pointer*/
  642.     short                        wdSize;                            /*Write Data size*/
  643.     Ptr                            wdPtr;                            /*Write Data pointer*/
  644.     char                        ccbStart[296];                    /*CCB memory allocated for driver afpWrite max size(CCB)=296 all other calls=150*/
  645. };
  646. #if defined(powerc) || defined(__powerc)
  647. #pragma options align=reset
  648. #endif
  649.  
  650. typedef struct XPPPrmBlk XPPPrmBlk;
  651.  
  652. #if defined(powerc) || defined (__powerc)
  653. #pragma options align=mac68k
  654. #endif
  655. struct AFPLoginPrm {
  656.     QElem                        *qLink;
  657.     short                        qType;
  658.     short                        ioTrap;
  659.     Ptr                            ioCmdAddr;
  660.     XPPCompletionUPP            ioCompletion;
  661.     OSErr                        ioResult;
  662.     long                        cmdResult;
  663.     short                        ioVRefNum;
  664.     short                        ioRefNum;
  665.     short                        csCode;
  666.     short                        sessRefnum;                        /*Offset to session refnum */
  667.     char                        aspTimeout;                        /*Timeout for ATP */
  668.     char                        aspRetry;                        /*Retry count for ATP */
  669.     short                        cbSize;                            /*Command block size */
  670.     Ptr                            cbPtr;                            /*Command block pointer */
  671.     short                        rbSize;                            /*Reply buffer size */
  672.     Ptr                            rbPtr;                            /*Reply buffer pointer */
  673.     AddrBlock                    afpAddrBlock;                    /*block in AFP login */
  674.     Ptr                            afpSCBPtr;                        /*SCB pointer in AFP login */
  675.     Ptr                            afpAttnRoutine;                    /*routine pointer in AFP login */
  676.     char                        ccbFill[144];                    /*CCB memory allocated for driver  Login needs only 150 bytes BUT CCB really starts in the middle of AFPSCBPtr and also clobbers AFPAttnRoutine. */
  677. };
  678. #if defined(powerc) || defined(__powerc)
  679. #pragma options align=reset
  680. #endif
  681.  
  682. typedef struct AFPLoginPrm AFPLoginPrm;
  683.  
  684.  
  685. /*
  686.     AttnRoutineProcs cannot be written in or called from a high-level 
  687.     language without the help of mixed mode or assembly glue because 
  688.     they use the following parameter-passing convention:
  689.  
  690.     typedef pascal void (*AttnRoutineProcPtr)(short sessRefnum, short attnBytes);
  691.     
  692.         In:
  693.             =>    sessRefnum        D0.W
  694.             =>    attnBytes        D1.W
  695.         Out:
  696.             none
  697. */
  698.  
  699. enum  {
  700.     uppAttnRoutineProcInfo        = kRegisterBased|REGISTER_ROUTINE_PARAMETER(1,kRegisterD0,kTwoByteCode)|REGISTER_ROUTINE_PARAMETER(2,kRegisterD1,kTwoByteCode)
  701. };
  702.  
  703. #if USESROUTINEDESCRIPTORS
  704. typedef pascal void (*AttnRoutineProcPtr)(short sessRefnum, short attnBytes);
  705.  
  706. typedef UniversalProcPtr AttnRoutineUPP;
  707.  
  708. #define CallAttnRoutineProc(userRoutine, sessRefnum, attnBytes)  \
  709.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppAttnRoutineProcInfo, (sessRefnum), (attnBytes))
  710.  
  711. #define NewAttnRoutineProc(userRoutine)  \
  712.     (AttnRoutineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppAttnRoutineProcInfo, GetCurrentISA())
  713.  
  714. #else
  715. typedef ProcPtr AttnRoutineUPP;
  716.  
  717. #define NewAttnRoutineProc(userRoutine)  \
  718.     (AttnRoutineUPP)((userRoutine))
  719.  
  720. #endif
  721.  
  722. #if defined(powerc) || defined (__powerc)
  723. #pragma options align=mac68k
  724. #endif
  725. struct ASPOpenPrm {
  726.     QElem                        *qLink;
  727.     short                        qType;
  728.     short                        ioTrap;
  729.     Ptr                            ioCmdAddr;
  730.     XPPCompletionUPP            ioCompletion;
  731.     OSErr                        ioResult;
  732.     long                        cmdResult;
  733.     short                        ioVRefNum;
  734.     short                        ioRefNum;
  735.     short                        csCode;
  736.     short                        sessRefnum;                        /*Offset to session refnum */
  737.     char                        aspTimeout;                        /*Timeout for ATP */
  738.     char                        aspRetry;                        /*Retry count for ATP */
  739.     AddrBlock                    serverAddr;                        /*Server address block */
  740.     Ptr                            scbPointer;                        /*SCB pointer */
  741.     AttnRoutineUPP                attnRoutine;                    /*Attention routine pointer*/
  742. };
  743. #if defined(powerc) || defined(__powerc)
  744. #pragma options align=reset
  745. #endif
  746.  
  747. typedef struct ASPOpenPrm ASPOpenPrm;
  748.  
  749. typedef ASPOpenPrm *ASPOpenPrmPtr;
  750.  
  751. #if defined(powerc) || defined (__powerc)
  752. #pragma options align=mac68k
  753. #endif
  754. struct ASPAbortPrm {
  755.     QElem                        *qLink;
  756.     short                        qType;
  757.     short                        ioTrap;
  758.     Ptr                            ioCmdAddr;
  759.     XPPCompletionUPP            ioCompletion;
  760.     OSErr                        ioResult;
  761.     long                        cmdResult;
  762.     short                        ioVRefNum;
  763.     short                        ioRefNum;
  764.     short                        csCode;
  765.     Ptr                            abortSCBPtr;                    /*SCB pointer for AbortOS */
  766. };
  767. #if defined(powerc) || defined(__powerc)
  768. #pragma options align=reset
  769. #endif
  770.  
  771. typedef struct ASPAbortPrm ASPAbortPrm;
  772.  
  773. #if defined(powerc) || defined (__powerc)
  774. #pragma options align=mac68k
  775. #endif
  776. struct ASPGetparmsBlk {
  777.     QElem                        *qLink;
  778.     short                        qType;
  779.     short                        ioTrap;
  780.     Ptr                            ioCmdAddr;
  781.     XPPCompletionUPP            ioCompletion;
  782.     OSErr                        ioResult;
  783.     long                        cmdResult;
  784.     short                        ioVRefNum;
  785.     short                        ioRefNum;
  786.     short                        csCode;
  787.     short                        aspMaxCmdSize;                    /*For SPGetParms*/
  788.     short                        aspQuantumSize;
  789.     short                        numSesss;
  790. };
  791. #if defined(powerc) || defined(__powerc)
  792. #pragma options align=reset
  793. #endif
  794.  
  795. typedef struct ASPGetparmsBlk ASPGetparmsBlk;
  796.  
  797. #if defined(powerc) || defined (__powerc)
  798. #pragma options align=mac68k
  799. #endif
  800. struct XCallParam {
  801.     QElem                        *qLink;
  802.     short                        qType;
  803.     short                        ioTrap;
  804.     Ptr                            ioCmdAddr;
  805.     XPPCompletionUPP            ioCompletion;
  806.     OSErr                        ioResult;
  807.     long                        cmdResult;
  808.     short                        ioVRefNum;
  809.     short                        ioRefNum;
  810.     short                        csCode;
  811.     short                        xppSubCode;
  812.     char                        xppTimeout;                        /*retry interval (seconds)*/
  813.     char                        xppRetry;                        /*retry count*/
  814.     short                        filler1;
  815.     Ptr                            zipBuffPtr;                        /*pointer to buffer (must be 578 bytes)*/
  816.     short                        zipNumZones;                    /*no. of zone names in this response*/
  817.     char                        zipLastFlag;                    /*non-zero if no more zones*/
  818.     char                        filler2;                        /*filler*/
  819.     char                        zipInfoField[70];                /*on initial call, set first word to zero*/
  820. };
  821. #if defined(powerc) || defined(__powerc)
  822. #pragma options align=reset
  823. #endif
  824.  
  825. typedef struct XCallParam XCallParam;
  826.  
  827. #if defined(powerc) || defined (__powerc)
  828. #pragma options align=mac68k
  829. #endif
  830. struct WDSElement {
  831.     short                        entryLength;
  832.     Ptr                            entryPtr;
  833. };
  834. #if defined(powerc) || defined(__powerc)
  835. #pragma options align=reset
  836. #endif
  837.  
  838. typedef struct WDSElement WDSElement;
  839.  
  840. #if defined(powerc) || defined (__powerc)
  841. #pragma options align=mac68k
  842. #endif
  843. struct NTElement {
  844.     AddrBlock                    nteAddress;                        /*network address of entity*/
  845.     char                        filler;
  846.     char                        entityData[99];                    /*Object, Type & Zone*/
  847. };
  848. #if defined(powerc) || defined(__powerc)
  849. #pragma options align=reset
  850. #endif
  851.  
  852. typedef struct NTElement NTElement;
  853.  
  854. #if defined(powerc) || defined (__powerc)
  855. #pragma options align=mac68k
  856. #endif
  857. struct NamesTableEntry {
  858.     Ptr                            qNext;                            /*ptr to next NTE*/
  859.     NTElement                    nt;
  860. };
  861. #if defined(powerc) || defined(__powerc)
  862. #pragma options align=reset
  863. #endif
  864.  
  865. typedef struct NamesTableEntry NamesTableEntry;
  866.  
  867. #define MPPATPHeader             \
  868.     QElem *qLink;                 \
  869.     short qType;                 \
  870.     short ioTrap;                 \
  871.     Ptr ioCmdAddr;                 \
  872.     UniversalProcPtr ioCompletion;  \
  873.     OSErr ioResult;             \
  874.     long userData;                 \
  875.     short reqTID;                 \
  876.     short ioRefNum;             \
  877.     short csCode;
  878.  
  879. #if defined(powerc) || defined (__powerc)
  880. #pragma options align=mac68k
  881. #endif
  882. struct MPPparms {
  883.     QElem                        *qLink;
  884.     short                        qType;
  885.     short                        ioTrap;
  886.     Ptr                            ioCmdAddr;
  887.     UniversalProcPtr            ioCompletion;
  888.     OSErr                        ioResult;
  889.     long                        userData;
  890.     short                        reqTID;
  891.     short                        ioRefNum;
  892.     short                        csCode;
  893. };
  894. #if defined(powerc) || defined(__powerc)
  895. #pragma options align=reset
  896. #endif
  897.  
  898. typedef struct MPPparms MPPparms;
  899.  
  900.  
  901. /*
  902.     MPPProtocolHandlerProcs and  DDPSocketListenerProcs cannot be written 
  903.     in or called from a high-level language without the help of mixed mode 
  904.     or assembly glue because they use the following parameter-passing conventions:
  905.  
  906.     typedef Boolean (*MPPProtocolHandlerProcPtr)(Ptr SCCAddr1, Ptr SCCAddr2, 
  907.             Ptr MPPLocalVars, Ptr nextFreeByteInRHA, Ptr ReadPacketAndReadRestPtr, 
  908.             short numBytesLeftToReadInPacket);
  909.  
  910.         In:
  911.             =>    SCCAddr1                    A0.L
  912.             =>    SCCAddr2                    A1.L
  913.             =>    MPPLocalVars                A2.L
  914.             =>    nextFreeByteInRHA            A3.L
  915.             =>    ReadPacketAndReadRestPtr    A4.L
  916.             =>    numBytesLeftToReadInPacket    D1.W
  917.         Out:
  918.             <=    Boolean                        Z bit of CCR
  919.  
  920.     typedef Boolean (*DDPSocketListenerProcPtr)(Ptr SCCAddr1, Ptr SCCAddr2, 
  921.             Ptr MPPLocalVars, Ptr nextFreeByteInRHA, Ptr ReadPacketAndReadRestPtr, 
  922.             char packetDestinationNumber, short numBytesLeftToReadInPacket);
  923.  
  924.         In:
  925.             =>    SCCAddr1                    A0.L
  926.             =>    SCCAddr2                    A1.L
  927.             =>    MPPLocalVars                A2.L
  928.             =>    nextFreeByteInRHA            A3.L
  929.             =>    ReadPacketAndReadRestPtr    A4.L
  930.             =>    packetDestinationNumber        D0.B
  931.             =>    numBytesLeftToReadInPacket    D1.W
  932.         Out:
  933.             <=    Boolean                        Z bit of CCR
  934.  
  935. */
  936.  
  937. enum  {
  938.     uppMPPProtocolHandlerProcInfo = SPECIAL_CASE_PROCINFO(kSpecialCaseProtocolHandler),
  939.     uppDDPSocketListenerProcInfo = SPECIAL_CASE_PROCINFO(kSpecialCaseSocketListener)
  940. };
  941.  
  942. #if USESROUTINEDESCRIPTORS
  943. typedef Boolean (*MPPProtocolHandlerProcPtr)(Ptr sccAddr1, Ptr sccAddr2, Ptr mppLocalVars, Ptr nextFreeByteInRHA, Ptr readPacketAndReadRestPtr, short numBytesLeftToReadInPacket);
  944.  
  945. typedef UniversalProcPtr MPPProtocolHandlerUPP;
  946.  
  947. #define CallMPPProtocolHandlerProc(userRoutine, sccAddr1, sccAddr2, mppLocalVars, nextFreeByteInRHA, readPacketAndReadRestPtr, numBytesLeftToReadInPacket)  \
  948.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppMPPProtocolHandlerProcInfo, (sccAddr1),  \
  949.     (sccAddr2), (mppLocalVars), (nextFreeByteInRHA), (readPacketAndReadRestPtr)),  \
  950.     (numBytesLeftToReadInPacket)
  951.  
  952. #define NewMPPProtocolHandlerProc(userRoutine)  \
  953.     (MPPProtocolHandlerUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),  \
  954.     uppMPPProtocolHandlerProcInfo, GetCurrentISA())
  955.  
  956. typedef Boolean (*DDPSocketListenerProcPtr)(Ptr sccAddr1, Ptr sccAddr2, Ptr mppLocalVars, Ptr nextFreeByteInRHA, Ptr readPacketAndReadRestPtr, char packetDestinationNumber, short numBytesLeftToReadInPacket);
  957.  
  958. typedef UniversalProcPtr DDPSocketListenerUPP;
  959.  
  960. #define CallDDPSocketListenerProc(userRoutine, sccAddr1, sccAddr2, mppLocalVars, nextFreeByteInRHA, readPacketAndReadRestPtr, packetDestinationNumber, numBytesLeftToReadInPacket)  \
  961.     CallUniversalProc((UniversalProcPtr)(userRoutine), uppDDPSocketListenerProcInfo, (sccAddr1),  \
  962.     (sccAddr2), (mppLocalVars), (nextFreeByteInRHA), (packetDestinationNumber),     \
  963.     (readPacketAndReadRestPtr), (numBytesLeftToReadInPacket))
  964.  
  965. #define NewDDPSocketListenerProc(userRoutine)  \
  966.     (DDPSocketListenerUPP) NewRoutineDescriptor((ProcPtr)(userRoutine),  \
  967.     uppDDPSocketListenerProcInfo, GetCurrentISA())
  968.  
  969. #else
  970. typedef ProcPtr MPPProtocolHandlerUPP;
  971.  
  972. #define NewMPPProtocolHandlerProc(userRoutine)  \
  973.     (MPPProtocolHandlerUPP)((userRoutine))
  974.  
  975. typedef ProcPtr DDPSocketListenerUPP;
  976.  
  977. #define NewDDPSocketListenerProc(userRoutine)  \
  978.     (DDPSocketListenerUPP)((userRoutine))
  979.  
  980. #endif
  981.  
  982. #if defined(powerc) || defined (__powerc)
  983. #pragma options align=mac68k
  984. #endif
  985. struct LAPparms {
  986.     QElem                        *qLink;
  987.     short                        qType;
  988.     short                        ioTrap;
  989.     Ptr                            ioCmdAddr;
  990.     UniversalProcPtr            ioCompletion;
  991.     OSErr                        ioResult;
  992.     long                        userData;
  993.     short                        reqTID;
  994.     short                        ioRefNum;
  995.     short                        csCode;
  996.     char                        protType;                        /*ALAP protocol Type */
  997.     char                        filler;
  998.     union {
  999.         Ptr                            wdsPointer;                    /*-> write data structure*/
  1000.         MPPProtocolHandlerUPP        handler;                    /*-> protocol handler routine*/
  1001.     }                            LAPptrs;
  1002. };
  1003. #if defined(powerc) || defined(__powerc)
  1004. #pragma options align=reset
  1005. #endif
  1006.  
  1007. typedef struct LAPparms LAPparms;
  1008.  
  1009. #if defined(powerc) || defined (__powerc)
  1010. #pragma options align=mac68k
  1011. #endif
  1012. struct DDPparms {
  1013.     QElem                        *qLink;
  1014.     short                        qType;
  1015.     short                        ioTrap;
  1016.     Ptr                            ioCmdAddr;
  1017.     UniversalProcPtr            ioCompletion;
  1018.     OSErr                        ioResult;
  1019.     long                        userData;
  1020.     short                        reqTID;
  1021.     short                        ioRefNum;
  1022.     short                        csCode;
  1023.     char                        socket;                            /*socket number */
  1024.     char                        checksumFlag;                    /*check sum flag */
  1025.     union {
  1026.         Ptr                            wdsPointer;                    /*-> write data structure*/
  1027.         DDPSocketListenerUPP        listener;                    /*->write data structure or -> Listener*/
  1028.     }                            DDPptrs;
  1029. };
  1030. #if defined(powerc) || defined(__powerc)
  1031. #pragma options align=reset
  1032. #endif
  1033.  
  1034. typedef struct DDPparms DDPparms;
  1035.  
  1036. #if defined(powerc) || defined (__powerc)
  1037. #pragma options align=mac68k
  1038. #endif
  1039. struct NBPparms {
  1040.     QElem                        *qLink;
  1041.     short                        qType;
  1042.     short                        ioTrap;
  1043.     Ptr                            ioCmdAddr;
  1044.     UniversalProcPtr            ioCompletion;
  1045.     OSErr                        ioResult;
  1046.     long                        userData;
  1047.     short                        reqTID;
  1048.     short                        ioRefNum;
  1049.     short                        csCode;
  1050.     char                        interval;                        /*retry interval */
  1051.     char                        count;                            /*retry count */
  1052.     union {
  1053.         Ptr                            ntQElPtr;
  1054.         Ptr                            entityPtr;
  1055.     }                            NBPPtrs;
  1056.     union {
  1057.         char                        verifyFlag;
  1058.         struct {
  1059.             Ptr                            retBuffPtr;
  1060.             short                        retBuffSize;
  1061.             short                        maxToGet;
  1062.             short                        numGotten;
  1063.         }                            Lookup;
  1064.         struct {
  1065.             AddrBlock                    confirmAddr;
  1066.             char                        newSocket;
  1067.         }                            Confirm;
  1068.     }                            parm;
  1069. };
  1070. #if defined(powerc) || defined(__powerc)
  1071. #pragma options align=reset
  1072. #endif
  1073.  
  1074. typedef struct NBPparms NBPparms;
  1075.  
  1076. #if defined(powerc) || defined (__powerc)
  1077. #pragma options align=mac68k
  1078. #endif
  1079. struct SetSelfparms {
  1080.     QElem                        *qLink;
  1081.     short                        qType;
  1082.     short                        ioTrap;
  1083.     Ptr                            ioCmdAddr;
  1084.     UniversalProcPtr            ioCompletion;
  1085.     OSErr                        ioResult;
  1086.     long                        userData;
  1087.     short                        reqTID;
  1088.     short                        ioRefNum;
  1089.     short                        csCode;
  1090.     char                        newSelfFlag;                    /*self-send toggle flag */
  1091.     char                        oldSelfFlag;                    /*previous self-send state */
  1092. };
  1093. #if defined(powerc) || defined(__powerc)
  1094. #pragma options align=reset
  1095. #endif
  1096.  
  1097. typedef struct SetSelfparms SetSelfparms;
  1098.  
  1099. #if defined(powerc) || defined (__powerc)
  1100. #pragma options align=mac68k
  1101. #endif
  1102. struct NBPKillparms {
  1103.     QElem                        *qLink;
  1104.     short                        qType;
  1105.     short                        ioTrap;
  1106.     Ptr                            ioCmdAddr;
  1107.     UniversalProcPtr            ioCompletion;
  1108.     OSErr                        ioResult;
  1109.     long                        userData;
  1110.     short                        reqTID;
  1111.     short                        ioRefNum;
  1112.     short                        csCode;
  1113.     Ptr                            nKillQEl;                        /*ptr to i/o queue element to cancel */
  1114. };
  1115. #if defined(powerc) || defined(__powerc)
  1116. #pragma options align=reset
  1117. #endif
  1118.  
  1119. typedef struct NBPKillparms NBPKillparms;
  1120.  
  1121. #if defined(powerc) || defined (__powerc)
  1122. #pragma options align=mac68k
  1123. #endif
  1124. struct GetAppleTalkInfoParm {
  1125.     QElem                        *qLink;
  1126.     short                        qType;
  1127.     short                        ioTrap;
  1128.     Ptr                            ioCmdAddr;
  1129.     UniversalProcPtr            ioCompletion;
  1130.     OSErr                        ioResult;
  1131.     long                        userData;
  1132.     short                        reqTID;
  1133.     short                        ioRefNum;
  1134.     short                        csCode;                            /*max. concurrent NBP requests*/
  1135.     short                        version;                        /*requested info version*/
  1136.     Ptr                            varsPtr;                        /*pointer to well known MPP vars*/
  1137.     Ptr                            DCEPtr;                            /*pointer to MPP DCE*/
  1138.     short                        portID;                            /*port number [0..7]*/
  1139.     long                        configuration;                    /*32-bit configuration word*/
  1140.     short                        selfSend;                        /*non zero if SelfSend enabled*/
  1141.     short                        netLo;                            /*low value of network range*/
  1142.     short                        netHi;                            /*high value of network range*/
  1143.     long                        ourAdd;                            /*our 24-bit AppleTalk address*/
  1144.     long                        routerAddr;                        /*24-bit address of (last) router*/
  1145.     short                        numOfPHs;                        /*max. number of protocol handlers*/
  1146.     short                        numOfSkts;                        /*max. number of static sockets*/
  1147.     short                        numNBPEs;                        /*max. concurrent NBP requests*/
  1148.     Ptr                            nTQueue;                        /*pointer to registered name queue*/
  1149.     short                        LAlength;                        /*length in bytes of data link addr*/
  1150.     Ptr                            linkAddr;                        /*data link address returned*/
  1151.     Ptr                            zoneName;                        /*zone name returned*/
  1152. };
  1153. #if defined(powerc) || defined(__powerc)
  1154. #pragma options align=reset
  1155. #endif
  1156.  
  1157. typedef struct GetAppleTalkInfoParm GetAppleTalkInfoParm;
  1158.  
  1159. #if defined(powerc) || defined (__powerc)
  1160. #pragma options align=mac68k
  1161. #endif
  1162. struct ATalkClosePrepParm {
  1163.     QElem                        *qLink;
  1164.     short                        qType;
  1165.     short                        ioTrap;
  1166.     Ptr                            ioCmdAddr;
  1167.     UniversalProcPtr            ioCompletion;
  1168.     OSErr                        ioResult;
  1169.     long                        userData;
  1170.     short                        reqTID;
  1171.     short                        ioRefNum;
  1172.     short                        csCode;
  1173.     Ptr                            appName;                        /*pointer to application name in buffer*/
  1174. };
  1175. #if defined(powerc) || defined(__powerc)
  1176. #pragma options align=reset
  1177. #endif
  1178.  
  1179. typedef struct ATalkClosePrepParm ATalkClosePrepParm;
  1180.  
  1181. #if defined(powerc) || defined (__powerc)
  1182. #pragma options align=mac68k
  1183. #endif
  1184. union MPPParamBlock {
  1185.     MPPparms                    MPP;                            /*General MPP parms*/
  1186.     LAPparms                    LAP;                            /*ALAP calls*/
  1187.     DDPparms                    DDP;                            /*DDP calls*/
  1188.     NBPparms                    NBP;                            /*NBP calls*/
  1189.     SetSelfparms                SETSELF;
  1190.     NBPKillparms                NBPKILL;
  1191.     GetAppleTalkInfoParm        GAIINFO;
  1192.     ATalkClosePrepParm            ATALKCLOSE;
  1193. };
  1194. #if defined(powerc) || defined(__powerc)
  1195. #pragma options align=reset
  1196. #endif
  1197.  
  1198. #define MOREATPHeader             \
  1199.     char atpSocket;                \
  1200.     char atpFlags;                    \
  1201.     AddrBlock addrBlock;            \
  1202.     short reqLength;                \
  1203.     Ptr reqPointer;                \
  1204.     Ptr bdsPointer;
  1205.  
  1206. #if defined(powerc) || defined (__powerc)
  1207. #pragma options align=mac68k
  1208. #endif
  1209. struct ATPparms {
  1210.     QElem                        *qLink;
  1211.     short                        qType;
  1212.     short                        ioTrap;
  1213.     Ptr                            ioCmdAddr;
  1214.     UniversalProcPtr            ioCompletion;
  1215.     OSErr                        ioResult;
  1216.     long                        userData;
  1217.     short                        reqTID;
  1218.     short                        ioRefNum;
  1219.     short                        csCode;
  1220.     char                        atpSocket;
  1221.     char                        atpFlags;
  1222.     AddrBlock                    addrBlock;
  1223.     short                        reqLength;
  1224.     Ptr                            reqPointer;
  1225.     Ptr                            bdsPointer;
  1226. };
  1227. #if defined(powerc) || defined(__powerc)
  1228. #pragma options align=reset
  1229. #endif
  1230.  
  1231. typedef struct ATPparms ATPparms;
  1232.  
  1233. #if defined(powerc) || defined (__powerc)
  1234. #pragma options align=mac68k
  1235. #endif
  1236. struct SendReqparms {
  1237.     QElem                        *qLink;
  1238.     short                        qType;
  1239.     short                        ioTrap;
  1240.     Ptr                            ioCmdAddr;
  1241.     UniversalProcPtr            ioCompletion;
  1242.     OSErr                        ioResult;
  1243.     long                        userData;
  1244.     short                        reqTID;
  1245.     short                        ioRefNum;
  1246.     short                        csCode;
  1247.     char                        atpSocket;
  1248.     char                        atpFlags;
  1249.     AddrBlock                    addrBlock;
  1250.     short                        reqLength;
  1251.     Ptr                            reqPointer;
  1252.     Ptr                            bdsPointer;
  1253.     char                        filler;                            /*numOfBuffs */
  1254.     char                        timeOutVal;                        /*timeout interval */
  1255.     char                        numOfResps;                        /*number of responses actually received */
  1256.     char                        retryCount;                        /*number of retries */
  1257.     short                        intBuff;                        /*used internally for NSendRequest */
  1258.     char                        TRelTime;                        /*TRelease time for extended send request */
  1259. };
  1260. #if defined(powerc) || defined(__powerc)
  1261. #pragma options align=reset
  1262. #endif
  1263.  
  1264. typedef struct SendReqparms SendReqparms;
  1265.  
  1266. #if defined(powerc) || defined (__powerc)
  1267. #pragma options align=mac68k
  1268. #endif
  1269. struct ATPmisc1 {
  1270.     QElem                        *qLink;
  1271.     short                        qType;
  1272.     short                        ioTrap;
  1273.     Ptr                            ioCmdAddr;
  1274.     UniversalProcPtr            ioCompletion;
  1275.     OSErr                        ioResult;
  1276.     long                        userData;
  1277.     short                        reqTID;
  1278.     short                        ioRefNum;
  1279.     short                        csCode;
  1280.     char                        atpSocket;
  1281.     char                        atpFlags;
  1282.     AddrBlock                    addrBlock;
  1283.     short                        reqLength;
  1284.     Ptr                            reqPointer;
  1285.     Ptr                            bdsPointer;
  1286.     union {
  1287.         char                        bitMap;                        /*bitmap received */
  1288.         char                        numOfBuffs;                    /*number of responses being sent*/
  1289.         char                        rspNum;                        /*sequence number*/
  1290.     }                            u0;
  1291. };
  1292. #if defined(powerc) || defined(__powerc)
  1293. #pragma options align=reset
  1294. #endif
  1295.  
  1296. typedef struct ATPmisc1 ATPmisc1;
  1297.  
  1298. #if defined(powerc) || defined (__powerc)
  1299. #pragma options align=mac68k
  1300. #endif
  1301. struct ATPmisc2 {
  1302.     QElem                        *qLink;
  1303.     short                        qType;
  1304.     short                        ioTrap;
  1305.     Ptr                            ioCmdAddr;
  1306.     UniversalProcPtr            ioCompletion;
  1307.     OSErr                        ioResult;
  1308.     long                        userData;
  1309.     short                        reqTID;
  1310.     short                        ioRefNum;
  1311.     short                        csCode;
  1312.     char                        atpSocket;
  1313.     char                        atpFlags;
  1314.     AddrBlock                    addrBlock;
  1315.     short                        reqLength;
  1316.     Ptr                            reqPointer;
  1317.     Ptr                            bdsPointer;
  1318.     char                        filler;
  1319.     char                        bdsSize;                        /*number of BDS elements */
  1320.     short                        transID;                        /*transaction ID recd. */
  1321. };
  1322. #if defined(powerc) || defined(__powerc)
  1323. #pragma options align=reset
  1324. #endif
  1325.  
  1326. typedef struct ATPmisc2 ATPmisc2;
  1327.  
  1328. #if defined(powerc) || defined (__powerc)
  1329. #pragma options align=mac68k
  1330. #endif
  1331. struct Killparms {
  1332.     QElem                        *qLink;
  1333.     short                        qType;
  1334.     short                        ioTrap;
  1335.     Ptr                            ioCmdAddr;
  1336.     UniversalProcPtr            ioCompletion;
  1337.     OSErr                        ioResult;
  1338.     long                        userData;
  1339.     short                        reqTID;
  1340.     short                        ioRefNum;
  1341.     short                        csCode;
  1342.     char                        atpSocket;
  1343.     char                        atpFlags;
  1344.     AddrBlock                    addrBlock;
  1345.     short                        reqLength;
  1346.     Ptr                            reqPointer;
  1347.     Ptr                            bdsPointer;
  1348.     Ptr                            aKillQEl;                        /*ptr to i/o queue element to cancel*/
  1349. };
  1350. #if defined(powerc) || defined(__powerc)
  1351. #pragma options align=reset
  1352. #endif
  1353.  
  1354. typedef struct Killparms Killparms;
  1355.  
  1356. #if defined(powerc) || defined (__powerc)
  1357. #pragma options align=mac68k
  1358. #endif
  1359. union ATPParamBlock {
  1360.     ATPparms                    ATP;                            /*General ATP parms*/
  1361.     SendReqparms                SREQ;                            /*sendrequest parms*/
  1362.     ATPmisc1                    OTH1;                            /*and a few others*/
  1363.     ATPmisc2                    OTH2;                            /*and a few others*/
  1364.     Killparms                    KILL;                            /*and a few others*/
  1365. };
  1366. #if defined(powerc) || defined(__powerc)
  1367. #pragma options align=reset
  1368. #endif
  1369.  
  1370. #if defined(powerc) || defined (__powerc)
  1371. #pragma options align=mac68k
  1372. #endif
  1373. union XPPParamBlock {
  1374.     XPPPrmBlk                    XPP;
  1375.     ASPGetparmsBlk                GETPARM;
  1376.     ASPAbortPrm                    ABORT;
  1377.     ASPOpenPrm                    OPEN;
  1378.     AFPLoginPrm                    LOGIN;
  1379.     XCallParam                    XCALL;
  1380. };
  1381. #if defined(powerc) || defined(__powerc)
  1382. #pragma options align=reset
  1383. #endif
  1384.  
  1385. #ifdef __cplusplus
  1386. extern "C" {
  1387. #endif
  1388.  
  1389. extern pascal OSErr OpenXPP(short *xppRefnum);
  1390. extern pascal OSErr ASPOpenSession(ASPOpenPrmPtr thePBptr, Boolean async);
  1391. extern pascal OSErr ASPCloseSession(XPPParmBlkPtr thePBptr, Boolean async);
  1392. extern pascal OSErr ASPAbortOS(XPPParmBlkPtr thePBptr, Boolean async);
  1393. extern pascal OSErr ASPGetParms(XPPParmBlkPtr thePBptr, Boolean async);
  1394. extern pascal OSErr ASPCloseAll(XPPParmBlkPtr thePBptr, Boolean async);
  1395. extern pascal OSErr ASPUserWrite(XPPParmBlkPtr thePBptr, Boolean async);
  1396. extern pascal OSErr ASPUserCommand(XPPParmBlkPtr thePBptr, Boolean async);
  1397. extern pascal OSErr ASPGetStatus(XPPParmBlkPtr thePBptr, Boolean async);
  1398. #define ASPGetStatusSync(paramBlock) ASPGetStatus((paramBlock), false)
  1399.  
  1400. extern pascal OSErr AFPCommand(XPPParmBlkPtr thePBptr, Boolean async);
  1401. extern pascal OSErr GetLocalZones(XPPParmBlkPtr thePBptr, Boolean async);
  1402. extern pascal OSErr GetZoneList(XPPParmBlkPtr thePBptr, Boolean async);
  1403. extern pascal OSErr GetMyZone(XPPParmBlkPtr thePBptr, Boolean async);
  1404. extern pascal OSErr PAttachPH(MPPPBPtr thePBptr, Boolean async);
  1405. extern pascal OSErr PDetachPH(MPPPBPtr thePBptr, Boolean async);
  1406. extern pascal OSErr PWriteLAP(MPPPBPtr thePBptr, Boolean async);
  1407. extern pascal OSErr POpenSkt(MPPPBPtr thePBptr, Boolean async);
  1408. extern pascal OSErr PCloseSkt(MPPPBPtr thePBptr, Boolean async);
  1409. extern pascal OSErr PWriteDDP(MPPPBPtr thePBptr, Boolean async);
  1410. extern pascal OSErr PRegisterName(MPPPBPtr thePBptr, Boolean async);
  1411. extern pascal OSErr PLookupName(MPPPBPtr thePBptr, Boolean async);
  1412. #define PLookupNameSync(paramBlock) PLookupName((paramBlock), false)
  1413.  
  1414. extern pascal OSErr PConfirmName(MPPPBPtr thePBptr, Boolean async);
  1415. extern pascal OSErr PRemoveName(MPPPBPtr thePBptr, Boolean async);
  1416. extern pascal OSErr PSetSelfSend(MPPPBPtr thePBptr, Boolean async);
  1417. extern pascal OSErr PKillNBP(MPPPBPtr thePBptr, Boolean async);
  1418. extern pascal OSErr PGetAppleTalkInfo(MPPPBPtr thePBptr, Boolean async);
  1419. extern pascal OSErr PATalkClosePrep(MPPPBPtr thePBptr, Boolean async);
  1420. extern pascal OSErr POpenATPSkt(ATPPBPtr thePBptr, Boolean async);
  1421. extern pascal OSErr PCloseATPSkt(ATPPBPtr thePBPtr, Boolean async);
  1422. extern pascal OSErr PSendRequest(ATPPBPtr thePBPtr, Boolean async);
  1423. extern pascal OSErr PGetRequest(ATPPBPtr thePBPtr, Boolean async);
  1424. extern pascal OSErr PSendResponse(ATPPBPtr thePBPtr, Boolean async);
  1425. extern pascal OSErr PAddResponse(ATPPBPtr thePBPtr, Boolean async);
  1426. extern pascal OSErr PRelTCB(ATPPBPtr thePBPtr, Boolean async);
  1427. extern pascal OSErr PRelRspCB(ATPPBPtr thePBPtr, Boolean async);
  1428. extern pascal OSErr PNSendRequest(ATPPBPtr thePBPtr, Boolean async);
  1429. extern pascal OSErr PKillSendReq(ATPPBPtr thePBPtr, Boolean async);
  1430. extern pascal OSErr PKillGetReq(ATPPBPtr thePBPtr, Boolean async);
  1431. extern pascal OSErr ATPKillAllGetReq(ATPPBPtr thePBPtr, Boolean async);
  1432. extern pascal void BuildLAPwds(Ptr wdsPtr, Ptr dataPtr, short destHost, short prototype, short frameLen);
  1433. extern pascal void BuildDDPwds(Ptr wdsPtr, Ptr headerPtr, Ptr dataPtr, const AddrBlock netAddr, short ddpType, short dataLen);
  1434. extern pascal void NBPSetEntity(Ptr buffer, Ptr nbpObject, Ptr nbpType, Ptr nbpZone);
  1435. extern pascal void NBPSetNTE(Ptr ntePtr, Ptr nbpObject, Ptr nbpType, Ptr nbpZone, short socket);
  1436. extern pascal short GetBridgeAddress(void);
  1437. extern pascal short BuildBDS(Ptr buffPtr, Ptr bdsPtr, short buffSize);
  1438. extern pascal OSErr MPPOpen(void);
  1439. extern pascal OSErr LAPAddATQ(ATQEntryPtr theATQEntry);
  1440. extern pascal OSErr LAPRmvATQ(ATQEntryPtr theATQEntry);
  1441. extern pascal OSErr ATPLoad(void);
  1442. extern pascal OSErr ATPUnload(void);
  1443. extern pascal OSErr NBPExtract(Ptr theBuffer, short numInBuf, short whichOne, EntityName *abEntity, AddrBlock *address);
  1444. extern pascal OSErr GetNodeAddress(short *myNode, short *myNet);
  1445. extern pascal Boolean IsMPPOpen(void);
  1446. extern pascal Boolean IsATPOpen(void);
  1447. extern pascal void ATEvent(long event, Ptr infoPtr);
  1448. extern pascal OSErr ATPreFlightEvent(long event, long cancel, Ptr infoPtr);
  1449.  
  1450. /*
  1451.     The following routines are obsolete and will not be supported on
  1452.     PowerPC. Equivalent functionality is provided by the routines
  1453.     above.
  1454. */
  1455.  
  1456. #if defined(OBSOLETE) && !defined(powerc) && !defined(__powerc)
  1457. extern pascal OSErr MPPClose(void);
  1458. extern pascal OSErr LAPOpenProtocol(ABByte theLAPType, Ptr protoPtr);
  1459. extern pascal OSErr LAPCloseProtocol(ABByte theLAPType);
  1460. extern pascal OSErr LAPWrite(ATLAPRecHandle abRecord, Boolean async);
  1461. extern pascal OSErr LAPRead(ATLAPRecHandle abRecord, Boolean async);
  1462. extern pascal OSErr LAPRdCancel(ATLAPRecHandle abRecord);
  1463. extern pascal OSErr DDPOpenSocket(short *theSocket, Ptr sktListener);
  1464. extern pascal OSErr DDPCloseSocket(short theSocket);
  1465. extern pascal OSErr DDPRead(ATDDPRecHandle abRecord, Boolean retCksumErrs, Boolean async);
  1466. extern pascal OSErr DDPWrite(ATDDPRecHandle abRecord, Boolean doChecksum, Boolean async);
  1467. extern pascal OSErr DDPRdCancel(ATDDPRecHandle abRecord);
  1468. extern pascal OSErr ATPOpenSocket(AddrBlock addrRcvd, short *atpSocket);
  1469. extern pascal OSErr ATPCloseSocket(short atpSocket);
  1470. extern pascal OSErr ATPSndRequest(ATATPRecHandle abRecord, Boolean async);
  1471. extern pascal OSErr ATPRequest(ATATPRecHandle abRecord, Boolean async);
  1472. extern pascal OSErr ATPReqCancel(ATATPRecHandle abRecord, Boolean async);
  1473. extern pascal OSErr ATPGetRequest(ATATPRecHandle abRecord, Boolean async);
  1474. extern pascal OSErr ATPSndRsp(ATATPRecHandle abRecord, Boolean async);
  1475. extern pascal OSErr ATPAddRsp(ATATPRecHandle abRecord);
  1476. extern pascal OSErr ATPResponse(ATATPRecHandle abRecord, Boolean async);
  1477. extern pascal OSErr ATPRspCancel(ATATPRecHandle abRecord, Boolean async);
  1478. extern pascal OSErr NBPRegister(ATNBPRecHandle abRecord, Boolean async);
  1479. extern pascal OSErr NBPLookup(ATNBPRecHandle abRecord, Boolean async);
  1480. extern pascal OSErr NBPConfirm(ATNBPRecHandle abRecord, Boolean async);
  1481. extern pascal OSErr NBPRemove(EntityPtr abEntity);
  1482. extern pascal OSErr NBPLoad(void);
  1483. extern pascal OSErr NBPUnload(void);
  1484. #endif
  1485.  
  1486. #ifdef __cplusplus
  1487. }
  1488. #endif
  1489.  
  1490. #endif
  1491.  
  1492.